﻿Imports FinanceiroBLL
Imports FinanceiroDAL
Public Class RecebimentosFRM
    Public Op As Char
    Public Codigo, Codigoit As Integer
    Public dtemissao As Date
    Dim objBLL As New ContasReceberBLL
    Dim objItBLL As New itensCtasReceberBLL
    Dim icrcod, stat As Integer
#Region "Fechar"
    Private Sub BFechar_Click(sender As System.Object, e As System.EventArgs) Handles BTNFechar.Click
        Me.Close()
        objBLL = Nothing
    End Sub
#End Region
#Region "Load"
    Private Sub RecebimentosFRM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        If (Op = "R") Then 'recebimento que vem de UC
            carregacombo()
            objItBLL = New itensCtasReceberBLL(Codigoit, 1)
            CarregaCampos()
            eventos()
        End If
    End Sub
#End Region
#Region "leave"
    Sub eventos()
        TXTValorRecebido.Text = TXTValorParcela.Text
        TXTValorRecebido_Leave(Nothing, Nothing)
        TXTValorParcela_Leave(Nothing, Nothing)
        TXTDesconto_Leave(Nothing, Nothing)
        TXTJuros_Leave(Nothing, Nothing)
    End Sub
#End Region
#Region "Carrega Campos"
    Sub CarregaCampos()
        LBCodigo.Text = "Código: " & objItBLL.icrcodigo
        icrcod = objItBLL.icrcodigo
        TXTCod.Text = icrcod
        DTPDtRecebimento.Text = Date.Now
        TXTValorParcela.Text = objItBLL.icrvalor
        CBFPagamentos.SelectedValue = objItBLL.pagcodigo
        DTPDtVencimento.Value = Date.Parse(objItBLL.icrdtvencimento)
        TXTValorRecebido.Text = objItBLL.icrvalrecebido
        TXTDesconto.Text = objItBLL.icrdesconto
        TXTJuros.Text = objItBLL.icrjam
        TXTNumParcela.Text = objItBLL.icrparcela
        CBContas.SelectedValue = objItBLL.concodigo
        TXTObs.Text = objItBLL.icrobs
        stat = objItBLL.stacodigo
        DTPEmissao.Value = dtemissao
    End Sub
#End Region
#Region "CarregaCombo"
    Sub carregacombo()
        objconexao.carregaCombo(CBFPagamentos, "Generico.Gen_FormaPagamento", "pag_codigo", "pag_descricao", "pag_codigo=2 or pag_codigo=3 or pag_codigo >=6 and sta_codigo < 2", "pag_descricao")
        objconexao.carregaCombo(CBContas, "Financeiro.Ofi_contas", "con_codigo", "con_descricao", "sta_codigo=1", "con_descricao")
        'CBFPagamentos.SelectedValue = -1
        'CBContas.SelectedValue = -1
    End Sub
#End Region
#Region "Limpar"
    Sub limpar()
        LBCodigo.Text = ""
        DTPDtRecebimento.Text = ""
        TXTValorParcela.Text = "0,00"
        CBFPagamentos.SelectedValue = -1
        TXTValorRecebido.Text = "0,00"
        TXTDesconto.Text = "0,00"
        TXTJuros.Text = "0,00"
        TXTNumParcela.Text = ""
        CBContas.SelectedValue = -1
        TXTObs.Text = ""
    End Sub
#End Region
#Region "BTNReceber"
    Private Sub BTNReceber_Click(sender As System.Object, e As System.EventArgs) Handles BTNReceber.Click
        Dim valrecebido As Decimal = TXTValorRecebido.Text
        Decimal.TryParse(TXTValorRecebido.Text.Replace("R$", ""), valrecebido)
        Dim desc, jam As Decimal
        Decimal.TryParse(TXTDesconto.Text.Replace("R$", ""), desc)
        Decimal.TryParse(TXTJuros.Text.Replace("R$", ""), jam)
        Dim data As Integer = 0
        Dim opt As Integer
        Try
            If Op = "R" Then
                data = DateTime.Compare(DTPEmissao.Value.ToShortDateString, DTPDtRecebimento.Value.ToShortDateString)
                If data <= 0 Then
                    If (valrecebido > 0) Then
                        If (CBContas.SelectedValue <> Nothing And CBFPagamentos.SelectedValue <> Nothing) Then
                            If (TXTValorRecebido.Text <> "" And TXTDesconto.Text <> "" And TXTJuros.Text <> "") Then
                                If (DTPDtVencimento.Value.ToShortDateString < DTPDtRecebimento.Value.ToShortDateString) Then
                                    opt = MsgBox("Data de vencimento menor que a data de hoje, deseja realmente fechar?", MsgBoxStyle.OkCancel)
                                End If
                                If DTPDtVencimento.Value.ToShortDateString >= DTPDtRecebimento.Value.ToShortDateString Or opt = 1 Then
                                    opt = 1
                                    If opt = 1 Then
                                        objItBLL = New itensCtasReceberBLL(Codigoit, Codigo, CBFPagamentos.SelectedValue, Decimal.Parse(TXTValorParcela.Text.Replace("R$", "")), Val(TXTNumParcela.Text), Decimal.Parse(TXTDesconto.Text.Replace("R$", "")), Decimal.Parse(TXTJuros.Text.Replace("R$", "")), Decimal.Parse(TXTValorRecebido.Text.Replace("R$", "")), DTPDtRecebimento.Value, DTPDtVencimento.Value, CBContas.SelectedValue, 6, TXTObs.Text, "")
                                        objItBLL.inserealteraICtasRec()
                                        MessageBox.Show("Pagamento efetuado com sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                                        limpar()
                                        Me.Close()
                                    End If
                                    objBLL.limpar()
                                    Me.Close()
                                End If
                            Else
                                MsgBox("Preencha os campos corretamente!", MsgBoxStyle.Exclamation) 'erro aki
                                If (TXTValorRecebido.Text = "") Then
                                    TXTValorRecebido.Select()
                                ElseIf TXTDesconto.Text = "" Then
                                    TXTDesconto.Select()
                                Else
                                    TXTJuros.Select()
                                End If
                            End If
                        Else
                            MsgBox("Selecione os campos contas e pagamentos corretamente!", MsgBoxStyle.Information)
                        End If
                    Else
                        MsgBox("Valor inválido. Verifique", MsgBoxStyle.Exclamation)
                        TXTValorTotal.Select()
                    End If
                Else
                    MsgBox("Data de recebimento não deve ser inferior a data de emissão", MsgBoxStyle.Critical)
                    DTPDtRecebimento.Select()
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub
#End Region
#Region "Atualiza valor"
    Sub atualizavalor()
        Dim Valorparcela, desc, juros As Decimal
        Dim valortotal As Decimal = 0
        Dim valrecebido As Decimal
        Try
            If (Decimal.TryParse(TXTDesconto.Text.Replace("R$", ""), desc)) Then
            Else : desc = "0,00"
            End If

            If (Decimal.TryParse(TXTValorParcela.Text.Replace("R$", ""), Valorparcela)) Then
            Else : Valorparcela = "0,00"
            End If

            If (Decimal.TryParse(TXTJuros.Text.Replace("R$", ""), juros)) Then
            Else : juros = "0,00"
            End If

            If (Decimal.TryParse(TXTValorTotal.Text.Replace("R$", ""), valortotal)) Then
            Else : valortotal = "0,00"
            End If

            If (Decimal.TryParse(TXTValorRecebido.Text.Replace("R$", ""), valrecebido)) Then
            Else : valrecebido = "0,00"
            End If


            If desc = 0 Or juros = 0 Or desc = "0,00" Or juros = "0,00" Then
                TXTValorRecebido.Text = valortotal
            End If
            If (desc > Valorparcela) Then
                TXTValorTotal.Text = Valorparcela - desc
                MsgBox("Desconto maior que valor total", MsgBoxStyle.Exclamation)
                TXTDesconto.Text = ""
                TXTDesconto.Select()
            Else
                valortotal = (Valorparcela + juros) - desc
                TXTValorTotal.Text = valortotal
                TXTValorRecebido.Text = valortotal
            End If

            If TXTValorParcela.Text <> "" Then
                TXTValorParcela.Text = FormatCurrency(TXTValorParcela.Text)
            Else
                TXTValorParcela.Text = "0,00"
            End If
            If TXTDesconto.Text <> "" Then
                TXTDesconto.Text = FormatCurrency(TXTDesconto.Text)
            Else
                TXTDesconto.Text = "0,00"
            End If
            If TXTJuros.Text <> "" Then
                TXTJuros.Text = FormatCurrency(TXTJuros.Text)
            Else
                TXTJuros.Text = "0,00"
            End If
            If TXTValorTotal.Text <> "" Then
                TXTValorTotal.Text = FormatCurrency(TXTValorTotal.Text)
            Else
                TXTValorTotal.Text = "0,00"
            End If

            TXTValorTotal.Text = FormatCurrency(TXTValorTotal.Text)
            TXTValorRecebido.Text = FormatCurrency(TXTValorRecebido.Text)

        Catch ex As Exception
            Throw ex
        End Try

    End Sub
#End Region
#Region "Eventos propriedades"
    Private Sub TXTDesconto_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TXTDesconto.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
            e.Handled = True
        End If
        If (TXTDesconto.Text.Contains(",") = False And e.KeyChar = ",") Then
            e.Handled = False
        End If
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            atualizavalor()
        End If
    End Sub
    Private Sub TXTDesconto_Leave(sender As System.Object, e As System.EventArgs) Handles TXTDesconto.Leave
        atualizavalor()
    End Sub

    Private Sub TXTDesconto_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TXTDesconto.MouseUp
        TXTDesconto.SelectAll()
    End Sub
#End Region
#Region "Propriedades"
    Private Sub RecebimentosFRM_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
        If e.KeyChar = Convert.ToChar(13) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub

    Private Sub TXTJuros_Leave(sender As System.Object, e As System.EventArgs) Handles TXTJuros.Leave
        atualizavalor()
    End Sub

    Private Sub TXTJuros_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TXTJuros.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
            e.Handled = True
        End If
        If (TXTJuros.Text.Contains(",") = False And e.KeyChar = ",") Then
            e.Handled = False
        End If
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            atualizavalor()
        End If
    End Sub

    Private Sub TXTValorTotal_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TXTValorTotal.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
            e.Handled = True
        End If
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            TXTValorTotal.Text = FormatCurrency(TXTValorTotal.Text.Replace("R$", "").Replace(" ", ""))
        End If
    End Sub
    Private Sub TXTValorRecebido_Leave(sender As System.Object, e As System.EventArgs) Handles TXTValorRecebido.Leave
        atualizavalor()
        TXTValorRecebido.Text = FormatCurrency(TXTValorRecebido.Text.Replace("R$", "").Replace(" ", ""))
    End Sub

    Private Sub TXTValorParcela_Leave(sender As System.Object, e As System.EventArgs) Handles TXTValorParcela.Leave
        TXTValorParcela.Text = FormatCurrency(TXTValorParcela.Text.Replace("R$", "").Replace(" ", ""))
    End Sub
#End Region
End Class